/**
 *
 * @param {*} fn
 * @param {*} delay
 * @returns 一般可以通过返回终止的方法给调用者
 */
function _setTimeout(fn, delay) {
  if (typeof fn != "function") throw new TypeError("callback must be a function");
  let timer = null;
  // 执行方法
  function _exec() {
    fn();
    _loop();
  }

  // 循环方法
  function _loop() {
    timer = setTimeout(_exec, delay);
  }

  _loop();

  // 返回停止定时器的方法
  return function stop() {
    clearTimeout(timer);
  };
}

// egg
_setTimeout(() => {
  console.log(1);
}, 1000);
